package serveur;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Serveur version 2. Permet plusieurs echanges avec un client et attend le
 * message "END" du client pour fermer la connexion.
 * 
 * @author Erik
 */
public class Serveur2 {

	private static ServerSocket serveurSocket;

	public static void main(String[] args) {
		try {
			serveurSocket = new ServerSocket(2009);
			System.out.println("Serveur lance sur le port: 2009, en attente de connexion d'un client");
			Socket socket = serveurSocket.accept();

			System.out.println("Connexion TCP etablie");

			BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

			PrintWriter out;

			out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);

			String str = "";
			boolean quitter = false;
			while (!quitter) {
				str = in.readLine(); // lecture du message
				if (str != null) {
					if (str.equals("END"))
						quitter = true;
					else {
						// Affiche à l'écran la chaine lue.
						System.out.println("client@" + socket.getInetAddress() + " > " + str);
						// Envoi au client la confirmation de récéption
						out.println("serveur@" + serveurSocket.getInetAddress() + " > reception de : " + str);
					}
				}
			}
			System.out.println("Fermeture de la connexion");
			in.close();
			out.close();
			socket.close();

		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
